The present invention relates to the high-speed printing industry, and more particularly, to a method for printing variable data using a page description language in a high-speed printing environment.
Application programs, such as Adobe Illustrator.RTM., typically include a program which generates a specification of a screen or page's contents in a page description language. The specification, or page description code, provides instructions as to how to generate the image in a printer. The page description code is transferred from the application program to a printer, where it is executed to generate a bit map of the page. The most commonly used page description language is PostScript.RTM., which is a machine independent language produced by Adobe Systems, Inc.
An application program page typically contains a number of data areas with either graphic or alphanumeric data. The PostScript language includes commands that define or build "graphics states" for each of the data areas on the page. These graphics states are sets of default attributes such as angle, scale factor, type-font, location, etc., which define how data is to appear on the page. Often, multiple graphics states are defined for a single page, with the different graphic states corresponding to different data areas on the page. Examples of commands that are used in PostScript to build a graphics state are: 20 rotate, /Times-Roman findfont, 14 scalefont, and setfont. In addition to commands which build graphics states, PostScript specifications also include the graphic or alphanumeric data which is displayed in the data areas, as well as a print command such as "SHOW", which causes a bit map to be generated for the data.
In the past, page description languages, including PostScript, have only been used to print static data pages, because page description languages lack the functionality required for variable data printing. In variable data printing, each page shares a common background, and the displayed data in at least one data field changes for each page. Up until now, it has not been possible to print pages of variable data with page description languages such as PostScript, because the page description languages are unable to save page backgrounds and graphics states from a page specification, and are thus unable reuse the same background and graphics states when printing subsequent pages. Thus, with page description languages such as PostScript, whether the entire page is changed, or only a single item of data on the page is changed, a new page description language specification is generated to print each separate page.
For example, if thousands of copies of a mass mailing advertisement were to be printed, each copy being identical except for the recipient's name and address, it would be necessary to generate a new PostScript specification defining the page background, and the graphics states for the name and address fields, for each new name and address that is printed. Hence, to print 50 advertisements, it would be necessary to generate 50 PostScript specifications which each define virtually the same image.
In general, PostScript specifications are very complex and require extensive processing to generate and execute. Thus, generating a new PostScript specification each time a page of variable data is printed consumes an immense amount of processing time. In high-speed printing systems, it is typically the processing time, not the printer hardware, which determines the speed at which pages can be printed. Therefore, the processing required to repetitively redefine the same background and graphics states for each page of variable data significantly slows the entire printing system.
Due to the amount of processing time consumed in redefining the page template and graphics states for each new page of data that is printed, as well as the resultant effect on printing speed, it is desirable to have a method for processing variable data wherein once defined, the template and graphics states for a page can be stored and reused for printing subsequent pages. Further, it is desirable to have a method for printing variable data which is compatible with existing printing systems and page description languages, such as PostScript, and which is capable of processing variable data in a high-speed industrial printing system.